using Microsoft.Extensions.DependencyInjection;
using MyLogging;

namespace MyServices;

public static class MyservicesExtensions
{
    public static void AddMyservices(this IServiceCollection services)
    {
        services.AddTransient<DeviceService>();
        services.AddTransient<HardWareService>();
    }
    // // 创建服务集合（显式类型声明）
    // ServiceCollection services = new ServiceCollection();
    // // 注册服务（生命周期：Singleton、Scoped、Transient）
    // services.AddSingleton<ILogger, FileLogger>();       // 单例（全局唯一）
    // services.AddScoped<IUserService, UserService>();    // 作用域（如 HTTP 请求内唯一）
    // services.AddTransient<IEmailSender, SmtpEmailSender>(); // 瞬时（每次请求新实例）
    // 构建 ServiceProvider（显式声明类型）
    // ServiceProvider serviceProvider = services.BuildServiceProvider();
    // // 解析服务（推荐使用 GetRequiredService，如果未注册会抛异常）
    // ILogger logger = serviceProvider.GetRequiredService<ILogger>();
    // IUserService userService = serviceProvider.GetRequiredService<IUserService>(); 
    //  // 创建一个作用域（如 ASP.NET Core 的 HTTP 请求）
    // using (IServiceScope scope = serviceProvider.CreateScope())
    // {
    //     // 从作用域内解析服务
    //     IUserService scopedUserService = scope.ServiceProvider.GetRequiredService<IUserService>();
    //
    //     // 同一作用域内，Scoped 服务是同一个实例
    //     IUserService sameUserService = scope.ServiceProvider.GetRequiredService<IUserService>();
    //     Console.WriteLine(scopedUserService == sameUserService); // 输出 True
    // }
}